package day4;

import java.util.Arrays;

public class Test8 {
    public static void main(String[] args) {
        int[] array = {5, 2, 6, 5, 9, 0, 3};
        //希尔排序(我的理解)
//        for (int i = array.length/2; i >0 ; i/=2) {//每次分组的间隔
//            for (int j = 0; j < i; j++) {//比较几组
//                for (int k = j+i; k < array.length; k+=i) {//每一组进行排序
//                    for (int l = k; l >j ; l-=i) {
//                        if(array[l]<array[l-i]){
//                            int temp = array[l];
//                            array[l]= array[l-i];
//                            array[l-i] = temp;
//                        }else {
//                            break;
//                        }
//                    }
//
//                }
//
//            }
//        }


        //希尔排序
        for (int i = array.length/2; i >0 ; i/=2) {//每次分组的间隔
            for (int j = i; j < array.length ; j++) {//从间隔数开始，对于后面的每个数进行插入排序（他不是一组一组进行的，而是每个数每个数来）

                for (int k = j; k >=i ; k-=i) {
                    if(array[k]<array[k-i]){
                            int temp = array[k];
                            array[k]= array[k-i];
                            array[k-i] = temp;
                        }else {
                            break;
                        }
                }
            }
        }
        System.out.println(Arrays.toString(array));
    }
}
